Data berbentuk time series bisa dianalisa dengan berbagai macam cara. Salah satu analisa yang sering digunakan di dunia real adalah time series forecast modelling.
Apakah bisa kita membuat model time series untuk melakukan forecast data harga gula?
Data yang digunakan diambil dari situs isosugar.org. Data yang tersedia adalah data harga gula harian sejak dari 2017-01-03 hingga 2020-06-25.
Data diambil dengan cara web scrap.
Kita hanya akan membuat model berdasarkan data Januari 2017 hingga Mei 2020 sedangkan data pada Juni 2020 akan digunakan untuk validasi model forecast.
NADari data harian yang ada, ternyata pada saat hari libur datanya kosong (NA). Data kosong ini akan diisi harga pada hari sebelumnya (misal: closing harga Jumat atau kondisi lainnya).
Salah satu syarat agar kita bisa membangun model forecast dari data time series adalah:
Data yang digunakan harus stationary.
Bagaimana cara mengeceknya?
##
## Augmented Dickey-Fuller Test
##
## data: ts
## Dickey-Fuller = -3.1252, Lag order = 10, p-value = 0.102
## alternative hypothesis: stationary
## [1] "Tidak stationary"
Ternyata datanya tidak stasioner sehingga perlu ada transformasi agar menjadi stasioner. Caranya adalah dengan membuat data time series baru dengan membuat selisih harga dengan lag = n hari.
Bagaimana mencari nilai
n?
ndiffs(ts, alpha=0.05, test=c('kpss'))
## [1] 1
Sehingga didapat lag = 1 hari.
new_time_series = current_time_series[i+1] - current_time_series[i]
Yakni: data esok dikurang data sekarang.
Bagaimana hasil transformasinya?
Mari kita cek apakah data hasil transformasinya stasioner atau belum!
##
## Augmented Dickey-Fuller Test
##
## data: ts_transformed
## Dickey-Fuller = -10.227, Lag order = 10, p-value = 0.01
## alternative hypothesis: stationary
## [1] "stationary"
Ternyata hasilnya stasioner. Berarti kita akan membuat model berdasarkan data hasil transformasi ini.
Kita akan membuat model untuk forecast harga gula. Agar bisa melakukan cross validation, data akan kita pecah menjadi dua, yakni:
train dataset, yakni berisi data selisih harga gula 2017 - 2019.test dataset, yakni data harga gula pada Januari 2020 agar kita bisa menilai performance dari model yang kita buat.Kita akan membuat beberapa model time series, model yang terbaik akan dipilih berdasarkan validasi dengan test dataset.
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -1.310490e-06 0.1467468 0.1077438 NaN Inf 0.6122437 7.803934e-06
## Test set 6.492807e-02 0.1803928 0.1472824 NaN Inf 0.8369185 2.595380e-01
## Theil's U
## Training set NA
## Test set NaN
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.0001352459 0.1467556 0.1077333 NaN Inf 0.6121839 -0.004552901
## Test set 0.0648734765 0.1803369 0.1472419 NaN Inf 0.8366881 0.259331596
## Theil's U
## Training set NA
## Test set NaN
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.006444623 0.1805340 0.1122071 100 100 0.6376059 0.03225974
## Test set 0.037200000 0.1529575 0.1132000 100 100 0.6432482 0.22686399
## Theil's U
## Training set NA
## Test set 0
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.004979076 0.1996018 0.1288276 NaN Inf 0.7320503 -0.03177781
## Test set 0.029275503 0.1817446 0.1431988 NaN Inf 0.8137137 0.26008797
## Theil's U
## Training set NA
## Test set NaN
## ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
## Training set 0.0000 0.2511023 0.1734297 NaN Inf 0.9854978 -0.4792217 NA
## Test set 0.0372 0.1529575 0.1132000 100 100 0.6432482 0.2268640 0
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.001409578 0.1788000 0.1139979 NaN Inf 0.6477823 0.0203567
## Test set 0.045433505 0.1551474 0.1161518 Inf Inf 0.6600212 0.2266743
## Theil's U
## Training set NA
## Test set NaN
| Metode | MAE |
|---|---|
| Auto ARIMA | 0.1132 |
| Naive | 0.1132 |
| TBATS | 0.1162 |
| Holtwinter | 0.1432 |
| Exponential Smoothing | 0.1472 |
| ARIMA | 0.1473 |